package org.jsola.contract.service;

import org.jsola.contract.dao.ICompanyContractShowDAO;
import org.jsola.contract.dto.CompanyContractShowAddDTO;
import org.jsola.contract.dto.CompanyContractShowUpdateDTO;
import org.jsola.contract.entity.CompanyContractShowDO;
import org.jsola.contract.query.CompanyContractShowQuery;
import org.jsola.contract.vo.CompanyContractShowListVO;
import org.jsola.contract.vo.CompanyContractShowVO;
import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 合同员工签署后是否展示
 *
 * @author JanusMix
 */
public interface ICompanyContractShowService extends IService<ICompanyContractShowDAO, CompanyContractShowDO> {

    /**
     * 新增合同员工签署后是否展示
     * @param companyContractShowAddDTO 新增合同员工签署后是否展示DTO
     * @param tokenUser 当前用户
     * @return 合同员工签署后是否展示详情信息
     */
    CompanyContractShowVO save(CompanyContractShowAddDTO companyContractShowAddDTO, TokenUser tokenUser);

    /**
     * 修改合同员工签署后是否展示
     * @param companyContractShowUpdateDTO 修改合同员工签署后是否展示DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(CompanyContractShowUpdateDTO companyContractShowUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除合同员工签署后是否展示，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param companyContractShowIds 合同员工签署后是否展示id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String...companyContractShowIds);

    /**
     * 根据合同员工签署后是否展示id查找
     * @param companyContractShowId 合同员工签署后是否展示id
     * @param siteId 所属站点id
     * @return 合同员工签署后是否展示详情信息
     */
    CompanyContractShowVO selectById(String companyContractShowId, String siteId);

    /**
     * 查询合同员工签署后是否展示
     * @param companyContractShowQuery 查询条件
     * @param siteId 所属站点id
     * @return 合同员工签署后是否展示列表信息
     */
    List<CompanyContractShowListVO> select(CompanyContractShowQuery companyContractShowQuery, String siteId);

    /**
    * 查询合同员工签署后是否展示记录数
    * @param companyContractShowQuery 查询条件
    * @param siteId 所属站点id
    * @return 合同员工签署后是否展示记录数
    */
    int selectCount(CompanyContractShowQuery companyContractShowQuery, String siteId);

    /**
     * 分页查询合同员工签署后是否展示
     * @param companyContractShowQuery 查询条件
     * @param siteId 所属站点id
     * @return 合同员工签署后是否展示列表信息
     */
    Page<CompanyContractShowListVO> selectPage(CompanyContractShowQuery companyContractShowQuery, String siteId);


    /**
     * 根据合同员工签署后是否展示id查找
     * @param companyContractShowId 合同员工签署后是否展示id
     * @param siteId 所属站点id
     * @return 合同员工签署后是否展示
     */
    CompanyContractShowDO selectDOById(String companyContractShowId, String siteId);

    /**
     * 查询合同员工签署后是否展示
     * @param companyContractShowQuery 查询条件
     * @param siteId 所属站点id
     * @return 合同员工签署后是否展示列表
     */
    List<CompanyContractShowDO> selectDO(CompanyContractShowQuery companyContractShowQuery, String siteId);

    /**
     * 获取某公司的小程序签署成功后,合同是否默认展示
     *
     * @param companyId 公司id
     * @param tokenUser 站点id
     * @return 合同是否默认展示
     */
    CompanyContractShowVO findByCompanyId(String companyId, TokenUser tokenUser);

    /**
     * 修改某公司的小程序签署成功后,合同是否默认展示
     *
     * @param companyId 公司id
     * @param isShow    是否展示
     * @param tokenUser 站点id
     */
    void updateCompanyShow(String companyId, Boolean isShow, TokenUser tokenUser);
}


